Skip to main content

使用响应式设计

注意

CODESYS Visualization 版本 4.7.0.0 及更高版本,您可以设计响应式可视化。

响应式设计可自动适应显示变体的大小和布局。无论设备是台式机、笔记本电脑、平板电脑、面板还是智能手机,都会考虑相应设备的规格,并调整可视化的大小和布局。

为了向可视化用户提供这一便捷功能,您需要根据客户端大小配置显示变体和可视化元素。这与 Web 可视化相关,因为此处的客户端大小不同。但是,该功能可以以相同的方式用于目标可视化。

响应式设计特别适合网页可视化,但目标可视化或集成可视化也需要进行配置设置。

过程. 准备网页可视化
  1. 在可视化管理器下,打开 网页可视化 目的。

  2. 指定缩放类型。

    • 选择 固定的 缩放选项。

      并选择 使用自动检测的客户端大小 选项。

      随着 固定的 缩放类型,可视化对象(主页)的内容不按比例显示。显示大小自动确定。

      Container 变量在项目中被识别。

      现在,您可以按照如下所述配置可视化元素,以确保它们根据客户端的显示、移动或调整大小。

    • 或者选择其中一个缩放选项, 各向同性 或者 各向异性

      1. 在设备树中,打开可视化管理器。

        响应式可视化尺寸 选项位于 设置 选项卡中的 其他设置 团体。

      2. 选择该选项。

        整个应用程序中激活了“响应式可视化”功能。

      随着 各向同性各向异性 缩放类型,主页的全部内容将缩放至客户端提供的显示尺寸。客户端尺寸会自动检测。

      现在,您可以按照如下所述配置可视化元素,以确保它们根据客户端的定位或调整大小进行显示。

访问客户机规模

要访问当前可视化的大小,变量 Visu.WidthVisu.Height 可以插入表达式中。要访问当前容器的大小,变量 Container.WidthContainer.Height 可以插入表达式中。

为了在深度结构化的可视化中确定客户的总规模,变量 VisuElems.CurrentClient.WidthVisuElems.CurrentClient.Height 可以插入表达式中。然后,您可以在可视化元素的属性中指定这些表达式。

这使得在深度结构化的可视化中访问客户的总规模成为可能。例如,您可以决定纵向或横向格式。

有关更多信息,请参阅: 优化调整位置和大小

使用“固定”缩放类型

随着 固定的 缩放类型,则可视化内容将不按比例显示。但是,如果按照如下所述进行配置,元素将根据客户端移动或调整大小。

. 可视化元素的右对齐停靠

为此,请按如下方式配置:

  • 绝对运动移动XContainer.Width - Visu.Width

. 填充区域

这可以通过以下方式实现 趋势痕迹 或者 笛卡尔 XY 图表 元素。

为此,请按如下方式配置:

  • 相对运动右下角移动XContainer.Width - Visu.Width

  • 相对运动右下角移动YContainer.Height- Visu.Height

. 设置元素的新位置

为此,请按如下方式配置:

  • 绝对运动移动XSEL(IsPortrait(Container), 0, -250)

  • 绝对运动移动YSEL(IsPortrait(Container), 0, 150)

. 隐藏元素

无形的 element 属性使得能够针对不同的客户端尺寸显示许多不同的元素。

为此,请按如下方式配置:

  • 状态变量无形的IsPortrait(Container)

使用“各向同性”或“各向异性”缩放类型

使用“各向同性”和“各向异性”缩放类型,主页的全部内容将缩放到客户端提供的显示大小。例如,如果平板电脑的页面方向从横向旋转为纵向,则内容与纵横比不匹配。会产生较大的条形图,无法最佳地填充页面。

为了避免这种情况,以前需要为每种纵向和横向格式创建一个单独的页面(可视化)。这些是通过 ClientListener 使用正确的起始页。现在可以通过响应式调整大小更轻松地实现这一点,而无需复制可视化对象。

通过从横向到纵向格式的响应式调整大小,较右侧的图块将通过绝对移动移至右下角。当前页面大小会动态适应当前客户端大小,元素将在其中处于最佳位置。从纵向格式更改为横向格式时,元素将朝相反方向移动。

32. 例子

可视化主页由多个使用框架元素编程的“图块”组成。如果可视化的方向发生变化,则必须重新定位和移动这些框架元素,并使其适应当前显示大小。

. 在 X 和 Y 方向上移动瓷砖

配置如下:

  • 财产: 绝对运动移动XSEL(IsPortrait(Container), 0, -250)

  • 财产: 绝对运动移动YSEL(IsPortrait(Container), 0, 150)

实施 IsPortrait 用于确定可视化大小

FUNCTION IsPortrait : BOOL
    VAR_INPUT    sizeProvider : VisuElems.ISizeProvider;
END_VAR
IF sizeProvider.Width < sizeProvider.Height THEN 
    IsPortrait := TRUE;
END_IF

使用典型表达式计算 X 和 Y 方向的运动 绝对运动 财产:

_visu_responsive_design_example.png